﻿using System;
using System.Linq;
using System.Windows.Forms;

namespace OwnZTec.LojaDelivery.UI.WinForms
{
    public partial class FrmPrincipal : Form
    {
        #region -- Membros e Construtores -------------------------------------------------------------------------------------------------

        public int idUsuarioLogado
        { get; set; }
        
        public FrmPrincipal()
        {
            InitializeComponent();
        }

        private void frmPrincipal_Load(object sender, EventArgs e)
        {
            Contexto.MainForm = this;

            Contexto.NomeSistema = Contexto.Db.tbParamentrosSistemas.First().desNomeSistema;

            Text = Contexto.NomeSistema;

            var frm = new FrmLogin();

            frm.ShowDialog(this);
        }
        #endregion ------------------------------------------------------------------------------------------------------------------------

        #region -- Eventos ----------------------------------------------------------------------------------------------------------------
        private void cmdSair_Click(object sender, EventArgs e)
        {
            Sair();
        }

        private void miFuncionarios_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmFuncionarios>();
        }

        private void miFuncoes_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmFuncoes>();
        }

        private void miPerfis_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmPerfis>();
        }

        private void miGruposDeProdutos_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmGruposProdutos>();
        }

        private void mniProdutos_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmProdutos>();
        }

        private void mniClientes_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmClientes>();
        }
        private void mniDesperdicio_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmDesperdicio>();
        }

        private void mniRelDesperdicio_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<RptDesperdicio>();
        }

        private void FrmPrincipal_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (Contexto.Saindo)
                return;

            var res = ExibirMensagem("Deseja sair?", MessageBoxButtons.YesNo,
                                     MessageBoxIcon.Question);

            if (res == DialogResult.Yes)
                return;

            e.Cancel = true;
            Contexto.Saindo = false;
        }
        private void saídaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmEntregaSaida>();
        }
        private void retornoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            //AbrirFormMdi<FrmEntregaRetorno>();
            AbrirFormMdi<EntregaRetorno2>();
        }

        private void novaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmVendas>();
        }
        private void diáriaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmImprimeDiario>();
        }

        private void pedidosPorClienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmPedidoPorCliente>();
        }

        private void débitosPorClienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmDebitoPorCliente>();
        }

        private void baixaManualToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Contexto.MainForm.Cursor = Cursors.WaitCursor;

            AbrirFormMdi<FrmBaixaManual>();
        }

        #endregion ------------------------------------------------------------------------------------------------------------------------

        #region -- Métodos Auxiliares -----------------------------------------------------------------------------------------------------
        public DialogResult ExibirMensagem(string mensagem, MessageBoxButtons botoes, MessageBoxIcon icones)
        {
            return MessageBox.Show(mensagem, Contexto.NomeSistema, botoes, icones);
        }


        public DialogResult ExibirMensagemSairSemSalvar()
        {
            return ExibirMensagem("Deseja sair sem salvar?", MessageBoxButtons.YesNo,
                                     MessageBoxIcon.Question);
        }
        public void Sair(bool sairSemPerguntar = false)
        {
            if (sairSemPerguntar)
                Contexto.Saindo = true;

            Close();
        }

        public void Inicializar()
        {
            CarregarPerfil();
        }

        private void CarregarPerfil()
        {
            if (Contexto.ModoAdmin)
                return;
        }

        public void AbrirFormMdi<T>() where T : new()
        {
            dynamic frm = MdiChildren.FirstOrDefault(f => f.GetType() == typeof(T));

            if (frm == null)
            {
                frm = new T();
                frm.MdiParent = this;
                frm.Show();
            }
            else
            {
                if (frm.WindowState == FormWindowState.Minimized)
                    frm.WindowState = FormWindowState.Normal;

                frm.Focus();

                Cursor = Cursors.Arrow;
            }
        }
        #endregion ------------------------------------------------------------------------------------------------------------------------

        
    }
}
